package com.foo.designpattern.interpreter;

/**
 * com.foo.designpattern.interpreter
 * Created with IntelliJ IDEA.
 * Created by jiang on 2016-06-12 14:28.
 *
 * @Description 抽象表达(Expression)式角色
 */

public interface Expression {
    /**
     * 以环境为准，本方法解释给定的任意一个表达式
     *
     * @param ctx
     * @return true or false
     */
    boolean interpret(Context ctx);

    /**
     * 检验两个表达式在结构上是否相同
     *
     * @param obj
     * @return true or false
     */
    boolean equals(Object obj);

    /**
     * 获取表达式的hash code
     *
     * @return 表达式的hash code
     */
    int hashCode();

    /**
     * 将任意给定的表达式转化成字符串
     *
     * @return 转换后的字符串
     */
    String toString();
}
